﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace Game_Fly.Code.AuxiliaryAction
{
    //用户计算是否被打中
    public class IsHit
    {
        static Graphics g;
        public IsHit(Graphics _g)
        {
            g = _g;
        }

        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////下面判断子弹与敌机相撞/////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////

        //敌机1[子弹与敌机]
        public void Enemy1_IsHit()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListEnemy1.Count; i++)
            {
                for (int j = 0; j < GameUI.ListBullets.Count; j++)
                {
                    if (i >= 0 && j >= 0)
                    {
                        if (Tools.IsIntersection(GameUI.ListEnemy1[i].X, GameUI.ListEnemy1[i].Y, GameUI.ListEnemy1[i].Width, GameUI.ListEnemy1[i].Height, GameUI.ListBullets[j].X, GameUI.ListBullets[j].Y, GameUI.ListBullets[j].Width, GameUI.ListBullets[j].Height))
                        {
                            GameUI.ListEnemy1[i].BeHitCount += 1;//累加击中次数
                            if (GameUI.ListEnemy1[i].BeHitCount >= GameUI.ListEnemy1[i].Output)//敌机1的击中次数大于或等于血量，执行毁灭
                            {
                                //累计分数
                                GameUI.GamePlane.HitNumber += GameUI.ListEnemy1[i].Output;
                                //播放爆炸音乐
                                new GameSound.GameSoundDX(GameMusic.Bz_Music1).Play();
                                //显示爆炸画面
                                g.DrawImage(GameImage.Bz1, GameUI.ListEnemy1[i].X, GameUI.ListEnemy1[i].Y);
                                //移除击中的物体
                                GameUI.ListEnemy1.RemoveAt(i);
                                GameUI.ListBullets.RemoveAt(j);
                                --i;
                                --j;
                            }
                        }
                    }
                }
            }
        }

        //敌机2[子弹与敌机]
        public void Enemy2_IsHit()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListEnemy2.Count; i++)
            {
                for (int j = 0; j < GameUI.ListBullets.Count; j++)
                {
                    if (i >= 0 && j >= 0)
                    {
                        if (Tools.IsIntersection(GameUI.ListEnemy2[i].X, GameUI.ListEnemy2[i].Y, GameUI.ListEnemy2[i].Width, GameUI.ListEnemy2[i].Height, GameUI.ListBullets[j].X, GameUI.ListBullets[j].Y, GameUI.ListBullets[j].Width, GameUI.ListBullets[j].Height))
                        {
                            GameUI.ListEnemy2[i].BeHitCount += 1;//累加击中次数
                            if (GameUI.ListEnemy2[i].BeHitCount >= GameUI.ListEnemy2[i].Output)//敌机1的击中次数大于或等于血量，执行毁灭
                            {
                                //累计分数
                                GameUI.GamePlane.HitNumber += GameUI.ListEnemy2[i].Output;
                                //播放爆炸音乐
                                new GameSound.GameSoundDX(GameMusic.Bz_Music1).Play();
                                //显示爆炸画面
                                g.DrawImage(GameImage.Bz1, GameUI.ListEnemy2[i].X, GameUI.ListEnemy2[i].Y);
                                //移除击中的物体
                                GameUI.ListEnemy2.RemoveAt(i);
                                GameUI.ListBullets.RemoveAt(j);
                                --i;
                                --j;
                            }
                        }
                    }
                }
            }
        }

        //敌机Boss[子弹与敌机]
        public void EnemyBoss_IsHit()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListEnemyBoss.Count; i++)
            {
                for (int j = 0; j < GameUI.ListBullets.Count; j++)
                {
                    if (i >= 0 && j >= 0)
                    {
                        if (Tools.IsIntersection(GameUI.ListEnemyBoss[i].X, GameUI.ListEnemyBoss[i].Y, GameUI.ListEnemyBoss[i].Width, GameUI.ListEnemyBoss[i].Height, GameUI.ListBullets[j].X, GameUI.ListBullets[j].Y, GameUI.ListBullets[j].Width, GameUI.ListBullets[j].Height))
                        {
                            GameUI.ListEnemyBoss[i].BeHitCount += 1;//累加击中次数
                            if (GameUI.ListEnemyBoss[i].BeHitCount >= GameUI.ListEnemyBoss[i].Output)//敌机1的击中次数大于或等于血量，执行毁灭
                            {
                                //累计分数,,敌机有多少血就加都少积分
                                GameUI.GamePlane.HitNumber += GameUI.ListEnemyBoss[i].Output;
                                //播放爆炸音乐
                                new GameSound.GameSoundDX(GameMusic.Bz_Music1).Play();
                                //显示爆炸画面
                                g.DrawImage(GameImage.Bz1, GameUI.ListEnemyBoss[i].X, GameUI.ListEnemyBoss[i].Y);
                                //移除击中的物体
                                GameUI.ListEnemyBoss.RemoveAt(i);
                                GameUI.ListBullets.RemoveAt(j);
                                --i;
                                --j;
                            }
                        }
                    }
                }
            }
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////下面判断玩家与敌机相撞/////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        //敌机1[玩家与敌机]
        public void Enemy1_Plane()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListEnemy1.Count; i++)
            {
                if (i >= 0)
                {
                    if (Tools.IsIntersection(GameUI.ListEnemy1[i].X, GameUI.ListEnemy1[i].Y, GameUI.ListEnemy1[i].Width, GameUI.ListEnemy1[i].Height, GameUI.GamePlane.X, GameUI.GamePlane.Y, GameUI.GamePlane.Width, GameUI.GamePlane.Height))
                    {
                        //累计分数,,敌机有多少血就加都少积分
                        GameUI.GamePlane.HitNumber += GameUI.ListEnemy1[i].Output;
                        //扣掉玩家的生命
                        GameUI.GamePlane.Life -= GameUI.ListEnemy1[i].Output;
                        //播放爆炸音乐
                        new GameSound.GameSoundDX(GameMusic.Bz_Music1).Play();
                        //显示爆炸画面
                        g.DrawImage(GameImage.Bz1, GameUI.ListEnemy1[i].X, GameUI.ListEnemy1[i].Y);
                        //移除击中的物体
                        GameUI.ListEnemy1.RemoveAt(i);
                        --i;
                        //玩家死亡，游戏结束
                        if (GameUI.GamePlane.Life <= 1)
                            GameUI.GamePlane.IsOver = true;
                    }
                }
            }
        }

        //敌机2[玩家与敌机]
        public void Enemy2_Plane()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListEnemy2.Count; i++)
            {
                if (i >= 0)
                {
                    if (Tools.IsIntersection(GameUI.ListEnemy2[i].X, GameUI.ListEnemy2[i].Y, GameUI.ListEnemy2[i].Width, GameUI.ListEnemy2[i].Height, GameUI.GamePlane.X, GameUI.GamePlane.Y, GameUI.GamePlane.Width, GameUI.GamePlane.Height))
                    {
                        //累计分数,,敌机有多少血就加都少积分
                        GameUI.GamePlane.HitNumber += GameUI.ListEnemy2[i].Output;
                        //扣掉玩家的生命
                        GameUI.GamePlane.Life -= GameUI.ListEnemy2[i].Output;
                        //播放爆炸音乐
                        new GameSound.GameSoundDX(GameMusic.Bz_Music1).Play();
                        //显示爆炸画面
                        g.DrawImage(GameImage.Bz1, GameUI.ListEnemy2[i].X, GameUI.ListEnemy2[i].Y);
                        //移除击中的物体
                        GameUI.ListEnemy2.RemoveAt(i);
                        --i;
                        //玩家死亡，游戏结束
                        if (GameUI.GamePlane.Life <= 1)
                            GameUI.GamePlane.IsOver = true;
                    }
                }
            }
        }

        //敌机Boss[玩家与敌机]
        public void EnemyBoss_Plane()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListEnemyBoss.Count; i++)
            {
                if (i >= 0)
                {
                    if (Tools.IsIntersection(GameUI.ListEnemyBoss[i].X, GameUI.ListEnemyBoss[i].Y, GameUI.ListEnemyBoss[i].Width, GameUI.ListEnemyBoss[i].Height, GameUI.GamePlane.X, GameUI.GamePlane.Y, GameUI.GamePlane.Width, GameUI.GamePlane.Height))
                    {
                        //扣掉玩家的生命
                        GameUI.GamePlane.Life = 0;
                        //播放爆炸音乐
                        new GameSound.GameSoundDX(GameMusic.Bz_Music1).Play();
                        //显示爆炸画面
                        g.DrawImage(GameImage.Bz1, GameUI.ListEnemyBoss[i].X, GameUI.ListEnemyBoss[i].Y);
                        //玩家死亡，游戏结束
                        if (GameUI.GamePlane.Life <= 1)
                            GameUI.GamePlane.IsOver = true;
                    }
                }
            }
        }

        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////下面判断玩家与子弹奖励相撞/////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////

        //子弹奖品[玩家与子弹奖品]
        public void BulletTwoPrize_Plane()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListBulletTwoPrize.Count; i++)
            {
                if (i >= 0)
                {
                    if (Tools.IsIntersection(GameUI.ListBulletTwoPrize[i].X, GameUI.ListBulletTwoPrize[i].Y, GameUI.ListBulletTwoPrize[i].Width, GameUI.ListBulletTwoPrize[i].Height, GameUI.GamePlane.X, GameUI.GamePlane.Y, GameUI.GamePlane.Width, GameUI.GamePlane.Height))
                    {
                        GameUI.GamePlane.BulletType = false;//启动子弹1
                        //移除奖品
                        GameUI.ListBulletTwoPrize.RemoveAt(i);
                        --i;
                    }
                }
            }
        }

        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////下面判断子弹1与敌机相撞/////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        //敌机1[子弹与敌机]
        public void Enemy1_BulletTwo_IsHit()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListEnemy1.Count; i++)
            {
                for (int j = 0; j < GameUI.ListBulletsTwo.Count; j++)
                {
                    if (i >= 0 && j >= 0)
                    {
                        if (Tools.IsIntersection(GameUI.ListEnemy1[i].X, GameUI.ListEnemy1[i].Y, GameUI.ListEnemy1[i].Width, GameUI.ListEnemy1[i].Height, GameUI.ListBulletsTwo[j].X, GameUI.ListBulletsTwo[j].Y, GameUI.ListBulletsTwo[j].Width, GameUI.ListBulletsTwo[j].Height))
                        {
                            GameUI.ListEnemy1[i].BeHitCount += 1;//累加击中次数
                            if (GameUI.ListEnemy1[i].BeHitCount >= GameUI.ListEnemy1[i].Output)//敌机1的击中次数大于或等于血量，执行毁灭
                            {
                                //累计分数
                                GameUI.GamePlane.HitNumber += GameUI.ListEnemy1[i].Output;
                                //播放爆炸音乐
                                new GameSound.GameSoundDX(GameMusic.Bz_Music1).Play();
                                //显示爆炸画面
                                g.DrawImage(GameImage.Bz1, GameUI.ListEnemy1[i].X, GameUI.ListEnemy1[i].Y);
                                //移除击中的物体
                                GameUI.ListEnemy1.RemoveAt(i);
                                GameUI.ListBulletsTwo.RemoveAt(j);
                                --i;
                                --j;
                            }
                        }
                    }
                }
            }
        }

        //敌机2[子弹与敌机]
        public void Enemy2_BulletTwo_IsHit()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListEnemy2.Count; i++)
            {
                for (int j = 0; j < GameUI.ListBulletsTwo.Count; j++)
                {
                    if (i >= 0 && j >= 0)
                    {
                        if (Tools.IsIntersection(GameUI.ListEnemy2[i].X, GameUI.ListEnemy2[i].Y, GameUI.ListEnemy2[i].Width, GameUI.ListEnemy2[i].Height, GameUI.ListBulletsTwo[j].X, GameUI.ListBulletsTwo[j].Y, GameUI.ListBulletsTwo[j].Width, GameUI.ListBulletsTwo[j].Height))
                        {
                            GameUI.ListEnemy2[i].BeHitCount += 1;//累加击中次数
                            if (GameUI.ListEnemy2[i].BeHitCount >= GameUI.ListEnemy2[i].Output)//敌机1的击中次数大于或等于血量，执行毁灭
                            {
                                //累计分数
                                GameUI.GamePlane.HitNumber += GameUI.ListEnemy2[i].Output;
                                //播放爆炸音乐
                                new GameSound.GameSoundDX(GameMusic.Bz_Music1).Play();
                                //显示爆炸画面
                                g.DrawImage(GameImage.Bz1, GameUI.ListEnemy2[i].X, GameUI.ListEnemy2[i].Y);
                                //移除击中的物体
                                GameUI.ListEnemy2.RemoveAt(i);
                                GameUI.ListBulletsTwo.RemoveAt(j);
                                --i;
                                --j;
                            }
                        }
                    }
                }
            }
        }

        //敌机Boss[子弹与敌机]
        public void EnemyBoss_BulletTwo_IsHit()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListEnemyBoss.Count; i++)
            {
                for (int j = 0; j < GameUI.ListBulletsTwo.Count; j++)
                {
                    if (i >= 0 && j >= 0)
                    {
                        if (Tools.IsIntersection(GameUI.ListEnemyBoss[i].X, GameUI.ListEnemyBoss[i].Y, GameUI.ListEnemyBoss[i].Width, GameUI.ListEnemyBoss[i].Height, GameUI.ListBulletsTwo[j].X, GameUI.ListBulletsTwo[j].Y, GameUI.ListBulletsTwo[j].Width, GameUI.ListBulletsTwo[j].Height))
                        {
                            GameUI.ListEnemyBoss[i].BeHitCount += 1;//累加击中次数
                            if (GameUI.ListEnemyBoss[i].BeHitCount >= GameUI.ListEnemyBoss[i].Output)//敌机1的击中次数大于或等于血量，执行毁灭
                            {
                                //累计分数,,敌机有多少血就加都少积分
                                GameUI.GamePlane.HitNumber += GameUI.ListEnemyBoss[i].Output;
                                //播放爆炸音乐
                                new GameSound.GameSoundDX(GameMusic.Bz_Music1).Play();
                                //显示爆炸画面
                                g.DrawImage(GameImage.Bz1, GameUI.ListEnemyBoss[i].X, GameUI.ListEnemyBoss[i].Y);
                                //移除击中的物体
                                GameUI.ListEnemyBoss.RemoveAt(i);
                                GameUI.ListBulletsTwo.RemoveAt(j);
                                --i;
                                --j;
                            }
                        }
                    }
                }
            }
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////下面判断玩家与生命相撞/////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////

        //生命奖品[玩家与生命奖品]
        public void LifPrize_Plane()
        {
            //判断敌机是否被击中
            for (int i = 0; i < GameUI.ListLifePrize.Count; i++)
            {
                if (i >= 0)
                {
                    if (Tools.IsIntersection(GameUI.ListLifePrize[i].X, GameUI.ListLifePrize[i].Y, GameUI.ListLifePrize[i].Width, GameUI.ListLifePrize[i].Height, GameUI.GamePlane.X, GameUI.GamePlane.Y, GameUI.GamePlane.Width, GameUI.GamePlane.Height))
                    {
                        //加血量
                        GameUI.GamePlane.Life += 1;
                        //播放爆炸音乐
                        new GameSound.GameSoundDX(GameMusic.LifePrize).Play();
                        //移除奖品
                        GameUI.ListLifePrize.RemoveAt(i);
                        --i;
                    }
                }
            }
        }
    }
}
